package com.xxw.yygh.common.handler;

import com.xxw.yygh.common.exception.YyghException;
import com.xxw.yygh.common.result.R;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLException;

@RestControllerAdvice   //凡是由@controllerAdvice标记的类都表示全局异常处理类
public class GlobalExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    public R handleException(Exception ex){
        ex.printStackTrace(); //输出异常到日志文件
        return R.error().message(ex.getMessage());
    }

    @ExceptionHandler(value = RuntimeException.class)
    public R handleException(RuntimeException rx){
        rx.printStackTrace(); //输出异常到日志文件
        return R.error().message("运行异常");
    }

    @ExceptionHandler(value = SQLException.class)
    public R handleException(SQLException sx){
        sx.printStackTrace(); //输出异常到日志文件
        return R.error().message("Sql异常");
    }

    @ExceptionHandler(value = ArithmeticException.class)
    public R handleException(ArithmeticException ax){
        ax.printStackTrace(); //输出异常到日志文件
        return R.error().message("数学异常");
    }

    @ExceptionHandler(value = YyghException.class)
    public R handleYyghException(YyghException yx){
        yx.printStackTrace(); //输出异常到日志文件
        return R.error().message(yx.getMessage()).code(yx.getCode());
    }

}
